package com.mrzhou.study.struct.sort;

import com.mrzhou.core.tool.utils.DataUtil;

/**
 *  排序算法之冒泡排序
 */
public class BubbleSort {

    public static void main(String[] args) {
        int arr[] = new int[90000];
        for(int i = 0; i < arr.length; i++) {
            arr[i] = DataUtil.randomInt(0, arr.length);
        }
        Long startTime = System.currentTimeMillis();
        BubbleSort.bubbleSort(arr);
        Long endTime = System.currentTimeMillis();
        System.out.println(BubbleSort.toString(arr, 20));
        System.out.printf("冒泡排序[%d]条数据, 花费的时间: %d\n", arr.length, (endTime - startTime));
    }

    public static void bubbleSort(int[] arr) {
        for(int i = 0; i < arr.length; i++) {
            for(int j = arr.length - 1; j >= i + 1; j--) {
                if(arr[i] < arr[j]) { // 将大的数据向前移
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }

    public static String toString(int[] arr, int size) {
        StringBuffer sb = new StringBuffer("[");
        for (int i = 0; i < arr.length; i++) {
            if(i%size == 0 && i != 0 && i != arr.length - 1) {
                sb.append("\n");
            }
            if(i == arr.length - 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(", ");
            }
        }
        return sb.append("]").toString();
    }

}
